
import axios from "axios";
import { ElMessage } from 'element-plus'

export const baseUrl='http://192.168.16.199:8081/'

// export const uploadUrl=baseUrl+"manager/file/upload"
const instance = axios.create({
  baseURL: baseUrl,//axios的基础地址
  timeout: 3000,//超时
  headers:{
	  "Content-Type":"multipart/form-data"
  }
});
// 添加请求拦截器
instance.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
	//console.log("请求拦截config:",config)
	if(sessionStorage.getItem("token")){
		config.headers.Authorization=sessionStorage.getItem("token")
	}
	
    return config;
  }, function (error) {
    // 对请求错误做些什么
	//console.log("请求拦截error:",error)
    return Promise.reject(error);
  });

// 添加响应拦截器
instance.interceptors.response.use(function (response) {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
	//console.log("响应拦截response:",response)
    return response;
  }, function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
	//console.log("响应拦截error:",error)
    return Promise.reject(error);
  });
function concatUrl(data?:any){
	var arr=[]
	for(var key in data){
		arr.push(key+"="+data[key])
	}
	return arr.join("&");
}


interface configType{
	url:string,
	method:string,
	data?:object
}
import type {responseType} from "../model/http_model";



//封装一个post+get网络请求的方法；

async function httpRequest(url:string,method:string,data?:object){//data={adminAccount:"a",adminPassword:"b"}
	
	
		let config:configType={
			url,
			method
		}
		if(method.toLowerCase()=="get"){
			if(data && JSON.stringify(data)!="{}"){
				//地址
				config.url+="?"+concatUrl(data)
			}
		}else{
			config.data=data
		}
	//console.log(config)
	
	let res=await instance.request(config);
	
	let resData=res.data;
	
	//console.log('res',resData)
	try{
		if(resData.code==200){
			return resData;
		}else{
			ElMessage.error(resData.msg)
		}
	}catch(error){
		console.log('error',error)
		ElMessage("服务器请求错误")
	}
	
}



export class request2{
	static async getRequest(url:string,data?:object){
		return await httpRequest(url,"get",data)
	}
	static async postRequest(url:string,data?:object){
	
		return await httpRequest(url,"post",data)
	}
}



